import type { UserAction } from "@/types/user"

export default function reducer(
  state = JSON.parse(localStorage.getItem('profile') || '{}') || {
    user: {},
    userInfo: {},
  },
  action: UserAction
) {
  const { type, payload } = action
  if (type === 'GET_USER') {
    // 新的profile数据
    const profile = {
      ...state,
      // 用户自己的信息
      user: payload,
    }
    // 持久化存储
    localStorage.setItem('profile', JSON.stringify(profile))
    return profile
  } else if (type === 'GET_USERINFO') {
    // 新的profile数据
    const profile = {
      ...state,
      // 用户个人资料
      userinfo: payload,
    }
    // 持久化存储
    localStorage.setItem('profile', JSON.stringify(profile))
    return profile
  } else if (type === 'DELETE_PROFILE') {
    localStorage.removeItem('profile')
    return {
      userinfo: {},
      user: {},
    }
  } else if (type === 'UPDATE_USER') {
    // 新的profile数据
    const profile = {
      ...state,
      // 用户自己的信息
      user: {
        ...state.user,
        ...payload,
      },
    }
    // 持久化存储
    localStorage.setItem('profile', JSON.stringify(profile))
    return profile
  } else if (type === 'UPDATE_USERINFO') {
    // 新的profile数据
    const profile = {
      ...state,
      // 用户个人资料
      userinfo: {
        ...state.userinfo,
        ...payload,
      },
    }
    // 持久化存储
    localStorage.setItem('profile', JSON.stringify(profile))
    return profile
  } else if (type === 'UPDATE_AVATAR') {
    // 头像信息既在自己的信息也在用户资料里面
    // 新的profile数据
    const profile = {
      // 用户个人资料
      userinfo: {
        ...state.userinfo,
        ...payload,
      },
      // 用户自己的资料
      user: {
        ...state.user,
        ...payload,
      },
    }
    // 持久化存储
    localStorage.setItem('profile', JSON.stringify(profile))
    return profile
  }
  return state
}
